package org.snail.common.collection;

import java.util.*;

public class CollectionUtil {

    /**
     * 比较集合1中数据在集合2中不存在的数据
     * @param col1
     * @param col2
     * @param <E>
     * @return
     */
    public static  <E> Set<E> compareCollectionData(Set<E> col1, Set<E> col2) {

        Set<E> result = new HashSet<E>();

        //复制数据一份，必须修改原数据
        Set<E> col1Copy = new HashSet<E>();
        col1Copy.addAll(col1);
        Set<E> col2Copy = new HashSet<E>();
        col2Copy.addAll(col2);

        //从集合2中移除集合1中的元素
        col2Copy.removeAll(col1Copy);
        result.addAll(col2Copy);

        return result;
    }

    /**
     * 比较集合1中数据在集合2中不存在的数据
     * @param col1
     * @param col2
     * @param <E>
     * @return
     */
    public static  <E> List<E> compareCollectionData(List<E> col1, List<E> col2) {

        List<E> result = new ArrayList<E>();

        //复制数据一份，必须修改原数据
        List<E> col1Copy = new ArrayList<E>();
        col1Copy.addAll(col1);
        List<E> col2Copy = new ArrayList<E>();
        col2Copy.addAll(col2);

        //从集合2中移除集合1中的元素
        col2Copy.removeAll(col1Copy);
        result.addAll(col2Copy);

        return result;
    }

    /**
     * 将所有的list中的数据合并到一个list中
     * @param lists
     * @param <E>
     * @return
     */
    public static <E>List<E> addAllList(List<E>... lists){
            List<E> result = new ArrayList<>();
            for(List list : lists){
                result.addAll(list);
            }
        return result;
    }

}
